#include <gfunc_usart.h>
#include <gofcl_usart.h>

// 等待STAT寄存器的某些位有的变为1，其中stat_wait指出要等待的标志位，
// 这些位中任意位变为1则返回。
void usart_wait_stat(usart_qe usart_q, usart_stat_expl_s stat_wait) {
	union {
		usart_stat_expl_s s;
		u32_s u;
	} su = {
		.s = stat_wait,
	};
	u32_s stat_wait_u32 = su.u;
	u32_s stat_real_u32;
	do {
		stat_real_u32 = usart_rreg(usart_q, USART_STAT_R);
	} while ((stat_real_u32 & stat_wait_u32) == 0);
}
